home *** CD-ROM | disk | FTP | other *** search
- {----------------------------------------------------------------------------
- |
- | Library: Spider Containers for Object Pascal
- |
- | Module: ObjTest.Pas
- |
- | Description: Main form for Spider Container library example program.
- |
- | History: Version 1.0 March 1996. Copyright (c) 1996 Michel Brazeau
- | Interval Software
- |
- |---------------------------------------------------------------------------}
- unit ObjTest;
-
- interface
-
- uses
- WinTypes, WinProcs, SysUtils, Classes, Graphics, Forms, Controls, Menus,
- StdCtrls, Dialogs, Buttons, Messages, ExtCtrls,
-
- ObjList; { TUnorderedList }
-
- { returns a random value to be used when testing containers }
- function GetRandomNumber : Word;
-
- type
- TTestForm = class(TForm)
- MainMenu: TMainMenu;
- WindowMenu: TMenuItem;
- HelpMenu: TMenuItem;
- WindowCascadeItem: TMenuItem;
- WindowTileItem: TMenuItem;
- WindowArrangeItem: TMenuItem;
- HelpAboutItem: TMenuItem;
- WindowMinimizeItem: TMenuItem;
- TestMenu: TMenuItem;
- ArrayItem: TMenuItem;
- HashTableItem: TMenuItem;
- ListsItem: TMenuItem;
- QueueItem: TMenuItem;
- StackItem: TMenuItem;
- FileMenu: TMenuItem;
- ExitItem: TMenuItem;
- StatusBar: TPanel;
- ViewMenu: TMenuItem;
- ArrayTestSource: TMenuItem;
- HashStringTableTestSource: TMenuItem;
- ListsTestSource: TMenuItem;
- QueuePriorityQueueTestSource: TMenuItem;
- StackTestSource: TMenuItem;
- MainFormTestSouce: TMenuItem;
- SpiderHelp: TMenuItem;
- Bevel: TBevel;
- procedure FormCreate(Sender: TObject);
- procedure WindowCascadeItemClick(Sender: TObject);
- procedure UpdateMenuItems(Sender: TObject);
- procedure WindowTileItemClick(Sender: TObject);
- procedure WindowArrangeItemClick(Sender: TObject);
- procedure ExitItemClick(Sender: TObject);
- procedure WindowMinimizeItemClick(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure ArrayItemClick(Sender : TObject);
- procedure HashTableItemClick(Sender: TObject);
- procedure ListsItemClick(Sender: TObject);
- procedure QueueItemClick(Sender: TObject);
- procedure StackItemClick(Sender: TObject);
- procedure ArrayTestSourceClick(Sender: TObject);
- procedure HashStringTableTestSourceClick(Sender: TObject);
- procedure ListsTestSourceClick(Sender: TObject);
- procedure QueuePriorityQueueTestSourceClick(Sender: TObject);
- procedure StackTestSourceClick(Sender: TObject);
- procedure MainFormSourceClick(Sender: TObject);
- procedure SpiderHelpClick(Sender: TObject);
- procedure HelpAboutItemClick(Sender: TObject);
- private
- { Private declarations }
- procedure ShowHint(Sender: TObject);
-
- { creates and adds a TTextViewForm to display FileName }
- procedure AddTextViewForm( const FileName : String );
-
- public
- { Public declarations }
-
- { allows the user to select a file and load numbers from it into a
- list containing TWordBucket's }
- procedure LoadNumbersFromFile( NumberList : TUnorderedList );
-
- { allows the user to select a file and load strings from it into a
- list containing TStringCombo's }
- procedure LoadStringsFromFile( StringList : TUnorderedList );
-
- { allows the user to select a file, given a default file name }
- procedure RequestFileName( var FileName : String;
- const InitialDir : String;
- const Filter : String );
-
- end;
-
- var
- TestForm: TTestForm;
-
- {--------------------------------------------------------------------------}
-
- implementation
-
- {$R *.DFM}
-
- uses
-
- ObjBuckt, { TWordBucket, TStringCombo }
- About, { TAboutBox }
- TextView, { TTextViewForm }
- StkTest, { TStackForm }
- QueTest, { TQueueForm }
- HashTest, { THashTableForm }
- ArrTest, { TArrayForm }
- ListTest; { TNodeContainerForm }
-
- {--------------------------------------------------------------------------}
-
- function GetRandomNumber : Word;
- begin
- Randomize;
-
- Result := Random(9999);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.FormCreate(Sender: TObject);
- begin
- Application.OnHint := ShowHint;
- Screen.OnActiveFormChange := UpdateMenuItems;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.RequestFileName( var FileName : String;
- const InitialDir : String;
- const Filter : String );
- var
- OpenDialog : TOpenDialog;
-
- begin
- OpenDialog := TOpenDialog.Create(Self);
- try
- OpenDialog.InitialDir := InitialDir;
-
- OpenDialog.Filter := Filter + '|' + Filter;
-
- OpenDialog.Options := [ ofHideReadOnly ];
-
- OpenDialog.FileName := FileName;
-
- if OpenDialog.Execute then
- FileName := OpenDialog.FileName
- else
- Abort; { raise silent exception }
-
- finally
- OpenDialog.Free;
- end;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.LoadNumbersFromFile( NumberList : TUnorderedList );
- const
- CountStr : String = '25';
- var
- FileName : String;
-
- InFile : System.Text;
-
- NumberStr : String;
-
- I : LongInt;
-
- begin
- FileName := 'Numbers.Dat';
-
- if not FileExists(FileName) then
- RequestFileName(FileName, '.\Demo', '*.Dat');
-
- if not InputQuery('', 'Number of elements: ', CountStr) then
- Exit;
-
- System.Assign(InFile, FileName);
- System.Reset(InFile);
-
- try
- for I := 1 to StrToInt(CountStr) do
- begin
- if Eof(InFile) then
- break;
-
- ReadLn(InFile, NumberStr);
- NumberList.InsertAtTail(TWordBucket.Create(StrToInt(NumberStr)));
- end;
-
- finally
- System.Close(InFile);
- end;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.LoadStringsFromFile( StringList : TUnorderedList );
- const
- CountStr : String = '25';
- var
- FileName : String;
-
- InFile : System.Text;
-
- Str : String;
-
- I : LongInt;
-
- begin
- FileName := 'Strings.Dat';
-
- if not FileExists(FileName) then
- RequestFileName( FileName, '.\Demo', '*.Dat' );
-
- if not InputQuery('', 'Number of elements: ', CountStr) then
- Exit;
-
- System.Assign(InFile, FileName);
- System.Reset(InFile);
-
- try
- for I := 1 to StrToInt(CountStr) do
- begin
- if Eof(InFile) then
- break;
-
- ReadLn(InFile, Str);
- StringList.InsertAtTail(TStringCombo.Create(Str,nil));
- end;
-
- finally
- System.Close(InFile);
- end;
-
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.ShowHint(Sender: TObject);
- begin
- StatusBar.Caption := Application.Hint;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.ExitItemClick(Sender: TObject);
- begin
- Close;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.WindowCascadeItemClick(Sender: TObject);
- begin
- Cascade;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.WindowTileItemClick(Sender: TObject);
- begin
- Tile;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.WindowArrangeItemClick(Sender: TObject);
- begin
- ArrangeIcons;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.WindowMinimizeItemClick(Sender: TObject);
- var
- I: Integer;
- begin
- { Must be done backwards through the MDIChildren array }
- for I := MDIChildCount - 1 downto 0 do
- MDIChildren[I].WindowState := wsMinimized;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.UpdateMenuItems(Sender: TObject);
- begin
- WindowCascadeItem.Enabled := MDIChildCount > 0;
- WindowTileItem.Enabled := MDIChildCount > 0;
- WindowArrangeItem.Enabled := MDIChildCount > 0;
- WindowMinimizeItem.Enabled := MDIChildCount > 0;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.FormDestroy(Sender: TObject);
- begin
- Screen.OnActiveFormChange := nil;
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.ArrayItemClick(Sender : TObject);
- begin
- TArrayForm.Create(Self);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.HashTableItemClick(Sender: TObject);
- begin
- THashTableForm.Create(Self);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.ListsItemClick(Sender: TObject);
- begin
- TNodeContainerForm.Create(Self);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.QueueItemClick(Sender: TObject);
- begin
- TQueueForm.Create(Self);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.StackItemClick(Sender: TObject);
- begin
- TStackForm.Create(Self);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.AddTextViewForm(const FileName : String);
- begin
- TTextViewForm.Create(Application, FileName);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.ArrayTestSourceClick(Sender: TObject);
- var
- FileName : String;
- begin
- FileName := 'ArrTest.Pas';
-
- if not FileExists(FileName) then
- RequestFileName(FileName, '.\Demo', '*.pas');
-
- AddTextViewForm(FileName);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.HashStringTableTestSourceClick(Sender: TObject);
- var
- FileName : String;
- begin
- FileName := 'HashTest.Pas';
-
- if not FileExists(FileName) then
- RequestFileName(FileName, '.\Demo', '*.pas');
-
- AddTextViewForm(FileName);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.ListsTestSourceClick(Sender: TObject);
- var
- FileName : String;
- begin
- FileName := 'ListTest.Pas';
-
- if not FileExists(FileName) then
- RequestFileName(FileName, '.\Demo', '*.pas');
-
- AddTextViewForm(FileName);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.QueuePriorityQueueTestSourceClick(Sender: TObject);
- var
- FileName : String;
- begin
- FileName := 'QueTest.Pas';
-
- if not FileExists(FileName) then
- RequestFileName(FileName, '.\Demo', '*.pas');
-
- AddTextViewForm(FileName);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.StackTestSourceClick(Sender: TObject);
- var
- FileName : String;
- begin
- FileName := 'StkTest.Pas';
-
- if not FileExists(FileName) then
- RequestFileName(FileName, '.\Demo', '*.pas');
-
- AddTextViewForm(FileName);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.MainFormSourceClick(Sender: TObject);
- var
- FileName : String;
- begin
- FileName := 'ObjTest.Pas';
-
- if not FileExists(FileName) then
- RequestFileName(FileName, '.\Demo', '*.pas');
-
- AddTextViewForm(FileName);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.SpiderHelpClick(Sender: TObject);
- begin
- Application.HelpFile := '..\Help\Contain.Hlp';
- Application.HelpCommand(HELP_CONTENTS, 0);
- end;
-
- {--------------------------------------------------------------------------}
-
- procedure TTestForm.HelpAboutItemClick(Sender: TObject);
- var
- AboutBox : TAboutBox;
- begin
- AboutBox := TAboutBox.Create(Self);
-
- try
- {$ifdef Win32}
- AboutBox.Compiler.Caption := '32 bit build';
- {$else}
- AboutBox.Compiler.Caption := '16 bit build';
- {$endif}
- AboutBox.ShowModal;
- finally
- AboutBox.Free;
- end;
-
- end;
-
- end.
-